این مطلب یکی از مقالات پرونده ویژه«متدولوژیها، الگوها و معماری نرمافزار» شماره 207 ماهنامه شبکه است. علاقهمندان میتوانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند.
چارچوب یا فرآیند؟
بدون اینکه بخواهیم سراغ تعریف اسکرام برویم یا تاریخچه آن را مرور کنیم؛ میخواهیم بفهمیم اسکرام به زبان ساده چیست و چگونه کار میکند؟ چگونه میتوانیم کارها و پروژههای خود را در اسکرام تعریف و توسعه دهیم؟ برای استفاده از اسکرام چه باید کرد و باید از کجا شروع کنیم؟
همین ابتدا، باید یک موضوع مهم را روشن کنیم: آیا اسکرام یک چارچوب (Framework) یا فرآیند و متدولوژی است؟ یعنی با اسکرام میتوان ساختار کلی یک پروژه را ترسیم و مراحل کار را مشخص کرد یا اینکه اسکرام میخواهد به ما روش انجام کار و پروژه را آموزش دهد و بهطور دقیق شرح وظایف هریک از افراد درگیر در پروژه یا تولید محصول را مشخصکند؟
اغلب متخصصان از چارچوب اسکرام نام میبرند. کن شوئبر، مبدع اسکرام دائم از لفظ «فریم ورک» استفاده میکند و تاکید دارد که اسکرام یک چارچوب است و نمیخواهد جزئیات دقیق و کاملی را در مورد اینکه کارها در پروژه چگونه باید انجام شوند، عنوان کند. اسکرام سعی میکند کلیات و پیشنهادهای بهبود و تسریع پروژه را ارائه کند و خود مدیر اسکرام به همراه تیم اسکرام باید درباره نحوه انجام کارها و جزئیات آنها تصمیمگیری کنند. در اسکرام «باید» و «نباید» وجود ندارد و نسخهای برای اجرای تیم اسکرام پیچیده نمیشود. پس، پیش از اینکه سراغ اجزا و ساختار اسکرام برویم؛ باید اسکرام را اینطور در ذهن تجسم کنیم: «اسکرام چارچوبی برای توسعه نرمافزار و بهینهسازی مدیریت پروژه برای کاهش خطرات و مشکلات است.»
ساختار اسکرام
اسکرام یک چارچوب تکرارشونده برای انجام پروژهها و محصولات پیچیده است. اسکرام سعی میکند یک پروژه بزرگ با مراحل و پیچیدگیهای زیاد را به چندین کار یا بخش ثابت و قابل تکرار تقسیم کند. هریک از این کارهای تکراری با طول ثابت را اسپرینت (Sprint) میگوییم. هریک از اسپرینتها بازه زمانی یک تا دو هفته داشته و پس از اتمام هر اسپرینت، تیم اسکرام باید کنار هم نشسته و جلسههایی برگزار کنند و پس از مشخص کردن گامهای بعدی، سراغ اسپرینتهای جدید بروند. همینطور، در طول زمان، تیمها سعی میکنند اسپرینتهای یکهفتهای یا دوهفتهای خود را انجام دهند تا توسعه نرمافزار یا محصول با آهنگ و ضربان مشخصی پیش برود.
در ادامه با بررسی ساختار و اجزای یک اسکرام (شکل 1)؛ مبانی و اصول آن را توضیح میدهیم و بهصورت یک سناریو، تولید یک محصول یا خدمات را پیش میبریم.
مرحله اول: تهیه سند بالادستی (Product Backlog)
تصور کنید یک مشتری درخواست ساخت یک محصول یا ارائه یک خدمات جدید را داشته است. برای مثال، قرار است یک فروشگاه اینترنتی برای یک مشتری طراحی کنید یا یک مرکزداده برای شعبهای از بانک نصب و راهاندازی شود. مدیران شرکت با مشتری چند جلسه برگزار کرده و کلیات کار مشخص و موردتوافق طرفین قرار میگیرد.
شروع یک اسکرام با مالک یا صاحب محصول (Product Owner) است. مالک محصول اسناد کاملی درباره پروژه یا محصول آمادهسازی و ارائه میکند. در این اسناد باید بهطور واضحی جواب هر سوال از جمله، اهداف پروژه و محصول، مشخصات محصول، نیازمندیها، بایدها و نبایدها، زمان انجام پروژه یا تولید محصول و هر مسئله دیگری مشخصشده باشد. در این مرحله، تیم طراحی و توسعه میتوانند به کمک مدیران شرکت آمده و یک سند بالادستی کامل با جزئیات مشخص آماده کنند.
مرحله دوم: فازبندی
هیچگاه یک محصول بهصورت کامل تحویل مشتری نمیشود و باید فاز به فاز تکمیل و پیش برود. پس در این مرحله، کارفرما یا تیم توسعه باید کل پروژه را به چندین فاز مشخص A، B، C، D و ... تقسیم کرده و زمان انجام هریک را مشخص کند. در اینجا، مشخص میشود هر فاز در چه تاریخی شروع و به اتمام میرسد و اینکه آیا نیاز است چند فاز بهصورت موازی یکدیگر پیش بروند یا خیر. در برخی پروژهها، امکان پیشبرد چند فاز بهصورت همزمان وجود دارد، ولی در برخی پروژهها شروع یکفاز، نیازمند اتمام کامل فاز قبلی است. تمام این مسائل باید در این مرحله با برگزاری جلسههایی میان مشتری، کارفرما، تیم طراحی و توسعه مشخص و موردتوافق قرار گیرد.
مرحله سوم: برنامهریزی اسپرینت و تهیه سند اسپرینت(Sprint Backlog)
سند Product Backlog و فازبندی پروژه انجامشده و باید با برگزاری جلسههایی، اهداف و نحوه انجام اسپرینتها مشخص شود. اسپرینت یک دوره زمانی تکرارشونده در اسکرام است که به تکمیل محصول منجر میشود. اسپرینتها قلب اسکرام هستند و شامل کارهای روزانه، کارهای مربوط به توسعه محصول و جلسههای برنامهریزی، بازبینی و بازاندیشی میشوند. در این مرحله باید مدل انجام اسپرینتها مشخص شود تا افراد تیم بدانند با اسپرینتهایی چندساعته، چندروزه یا چندهفتهای روبهرو هستند و جلسهها در چه زمانهایی و به چه شکلی برگزار میشوند. در این مرحله شرکتها سعی میکنند، اسناد اسپرینت تهیه کنند و در آنها مسائل درونگروهی، تعیین نفرات، نحوه اجرای کارها و زمانبندیهای گروهی گنجاندهشده باشد.
جلسههایی با حضور اعضای تیمهای اسپرینت برگزارشده و هریک از اعضا وظیفه خودش را تفهیم میشود و نسبت به زمانبندی کل اسپرینت توجیه میشود. افراد اسکرام سعی میکنند کارهای خود را روی برگهها یا استیکی نوتهایی نوشته و مشخص کنند هر روز کدام برگهها انجام شوند.
با تهیه سند اسپرینت یا Sprint Backlog مشخص میشود که هر تیم و افرادش چه نقش و وظیفهای در فازهای مختلف پروژه دارد و اسپرینتهایی که باید انجام دهد، شامل چه کارهایی میشود. هر تیم در یک اسکرام میتواند از ۳ تا ۹ نفر باشد. زمان هر اسپرینت هم میتواند چند ساعت، ۲۴ ساعت و چند هفته براساس اسپرینتهای تعریفشده در هر فاز پروژه تعریف شود.
مرحله چهارم: اجرای اسپرینت
پس از مشخص شدن شرح وظایف هر تیم و فرد در پروژه و تهیه سند اسپرینت، یک اسپرینت کاری (ScrumFlow) شروع میشود. در این مرحله، اسکرام مستر سعی میکند پیشرفت اسپرینتها را در هر تیم پیگیری و جلسههای سرپایی ۱۰ الی ۱۵ دقیقهای برگزار کند. این جلسهها میتوانند روزانه باشند تا هر عضو تیم بتواند سریع گزارشی از پیشرفت کار خود ارائه بدهد و اسکرام مستر بداند پروژه در چه وضعیتی است. افراد حاضر در یک اسپرینت سعی میکنند در این جلسهها به تبادلنظر پرداخته و کارهای انجامشده یا باقیمانده را جابهجا کنند. تمام کارها روی برد اسپرینت حکشده و هر روز بهروزرسانی میشوند. اگر کاری به مشکل برخورده یا هنوز انجامنشده؛ سریع مشخصشده و برای آن چارهاندیشی میشود. گزارشهایی که از سوی افراد اسپرینت ارائه میشود باید دقیق، جدی و صادقانه باشد ولی به ارائه جزئیات فنی نیازی نیست.
مرحله پنجم: تحویل و بررسی اسپرینت
وقتی یک اسپرینت تمام میشود؛ به اسکرام مستر تحویل داده شده و مورد بررسی قرار میگیرد. آیا تمامکارها انجام شدند و هیچ نقصی وجود ندارد؟ آیا کار انجامشده با سند اسپرینت و سند Product Backlog تطابق کامل دارد؟ معمولا در این مرحله یک گزارش کلی از نحوه انجام اسپرینت داده میشود که به گزارش اسپرینت معروف است. در این گزارش به چالشها، مشکلات و نقاط ضعف اسپرینت اشاره میشود تا در آینده برطرف شود. در صورت نیاز، یک جلسه کوتاه هم برگزار میشود تا کل اسپرینت جمعبندی شود.
مرحله ششم: بازنگری اسپرینت
اگر یک اسپرینت بهطور کامل انجامنشده باشد یا همراه با ضعفها و نقایصی باشد، به مرحله Sprint Retrospective نیاز داریم. معمولا افراد اسپرینت دوباره دور هم جمع شده و جلسهای ۲ الی ۳ ساعته برگزار کرده و ضمن بررسی نقاط ضعف و قوت کار، راهکارهای بهبود اسپرینت یا عملکرد افراد را مشخص کرده و سعی میکنند بهسرعت اسپرینت را تکمیل و دوباره تحویل دهند. در این مرحله، ممکن است نیاز به انجام کارهای جدیدی باشد یا اینکه از ابزارها و امکانات دیگری در پروژه استفاده شود. برای زمان اتمام اسپرینت برنامهریزی میشود و دوباره هر فرد باید برگهها و وظایف خود را در یک بازه چندساعته یا یکروزه مشخص کند.
پس از اتمام یک اسپرینت و تحویل آن، جلسه طولانی میان اسکرام مستر و اعضای تیم اسکرام برگزارشده و دوباره پس از بررسی اسپرینت انجامشده و در صورت نیاز تقسیم کار جدید، اسپرینت جدیدی آغاز میشود. این روال تکراری آنقدر ادامه پیدا میکند تا پروژه و محصول به پایان خود نزدیک شود و بهاصطلاح وارد مرحله Potentially Product شود. گاهی واقعا یک پروژه و محصول در این مرحله به اتمام میرسد، اما اغلب اوقات هنوز به اشکالزدایی یا انجام یکسری جزئیات و کارهای تکمیلی نیاز است.
بُرد اسکرام (Scrum Board)
در تمام مراحل اسکرام باید یک بُرد فیزیکی یا دیجیتالی در دسترس باشد که اعضای تیم بتوانند کارهای خود را روی آن دنبال کنند و بدانند هریک چه وظایفی دارند و اکنون در چه مرحلهای هستند. در جلسههای سرپایی چند دقیقهای سعی میشود، مطالب روی برد بهروزرسانی شود و استیکی نوتهای روز گذشته با استیکی نوتهای امروز جایگزین شوند. هریک از اعضای تیم اسکرام سعی میکنند برگههای کاری خودشان را مرتب جابهجا کنند و برگههای کاری روز را از بخش To-Do به Doing و برگههایی را که دیروز انجام دادهاند را از وضعیت Doing به Done جابهجا کنند (شکل ۲).
این برد باید در مکانی نصب و استقرار پیدا کند که پیش روی تیم کاری باشد تا بتوانند در کمترین زمان به آن مراجعه کنند. برخی شرکتها و توسعهدهندههای نرمافزاری از اپلیکیشنهای وایتبردی استفاده میکنند که قابلیت اشتراکگذاری میان چندین کاربر در دستگاهها و پلتفرمهای مختلف را دارد. بهخصوص، اگر برخی از اعضای تیم دورکاری میکنند؛ لازم است که همیشه از راه دور به برد اسکرام دسترسی داشته باشند. برخی از نرمافزارهای اسکرام هم یک بخش برای پیگیری کارهای To-Do، Doing و Done دارند که براساس رنگبندی و دستهبندیهای مختلف پیادهسازی میشوند.
اسپرینت موفق
یکی از اهداف اسکرام چابکی یا Agile در کسبوکارها است. بخشهای تولید محصول، بازاریابی، فروش و خدمات میتوانند با اسکرام بهرهوری بیشتری پیدا کرده و فرآیندهای خود را متحول کنند و کار ارزشمندتری تحویل دهند.
اما اجرای یک اسکرام به تنهایی موفقیتآمیز نیست و شاید پروسه تولید محصول را طولانیتر، پیچیدهتر کند و چالشهای بیشتری پدید آورد. کسبوکارها باید بتوانند یک اسکرام موفق را پیادهسازی کنند. یک اسکرام بر سه قاعده «خودسازماندهی»، «چارچوببندی زمانی» و «پیشرفت مداوم» متکی است و کسبوکارها باید یاد بگیرند چگونه این قواعد را در بخشهای مختلف شرکتشان اجرا کنند. در بخش قبلی گفتیم که اسپرینت قلب یک اسکرام است. اگر تیمها بتوانند یک اسپرینت موفق و درست را پیادهسازی و فرهنگ کار اسکرام را در میان کارمندانشان بهخوبی نهادینه کنند؛ امیدوار خواهند بود اهداف و دستاوردهای مدیریت پروژه چابک را بهزودی مشاهده کنند. برای یک اسپرینت موفق رعایت چندین عامل بسیار ضروری به نظر میرسد:
۱- زمان یک اسپرینت مشخص باشد: معمولا یک اسپرینت کمتر از یک هفته یا بیشتر از چهار هفته نیست. حتما باید اسپرینتها یک مدت زمان مشخصی داشته باشند و تاکید میشود در زمان مقرر شروع و به اتمام برسند. تیمهایی که نتوانند زمانبندی اسپرینتها را رعایت کنند، کل پروژه و چابکی یک کسبوکار را مختل کرده و باعث کندی سرعت کار در مجموعهها میشوند. اگر یک تیم نتواند زمان مشخصشده اسپرینتی را رعایت کند، بهطور طبیعی در عملکرد تیمهای دیگر هم تاثیرگذار خواهد بود.
۲- تاکید بر جلسههای ایستاده روزانه: در تمام راهنماهای اسکرام روی برگزاری جلسههای ۱۵ دقیقهای روزانه تاکید شده است. در این جلسهها، اعضای تیم چند دقیقه دور هم جمع میشوند و موانع را بررسی میکنند و گزارشی کلی از روند پیشرفت کارها میدهند. این جلسههای سرپایی باید دقیق و کوتاه باشند. جلسههای ایستاده بخش مهمی از یک فرآیند اسکرام است. برگزاری این جلسهها برای یک تیم تازه اسکرام ضروری است و بهمرور باعث ایجاد فرهنگ کاری اسکرام میشود.
۳- بررسی مداوم اسپرینت: پس از پایان هر اسپرینت؛ بهتر است جلسههایی ۲ الی ۳ ساعته برگزار شود و کلیت کار مورد نقد و بررسی قرار گیرد. جمعبندی هر اسپرینت و یافتن روشهایی برای پیشرفت روند پروژه ضروری است. کارهای انجامشده و کارهای ناتمام را مشخص کنید تا در اسپرینتهای بعدی رسیدگی شوند.
۴- بهبود مستمر و آهسته: انتظار نداشته باشید یک تیم کاری جدید در همان اسپرینت اول موفقیتآمیز ظاهر شود و اسپرینتهای بعدی را با بالاترین بهرهوری و سرعت به اتمام برساند. گاهی اوقات یک تیم کاری باید چندین اسپرینت برگزار کرده و گامبهگام پیشرفت کند. بنابراین، ابتدا تاکید بر اجرای اسکرام و اسپرینتها و بعد تلاش برای برداشتن یک گام موثر و بهبوددهنده در پایان هر اسپرینت میتواند یک فرهنگ کاری را بسازد که به چابکی و هوشمندی کسبوکار منجر شود.
۵- مستندسازی: سازمانهایی که بتوانند در مستندسازی تجربیات و پروژهها بهتر عمل کنند؛ بهرهوری موفقتری خواهند داشت. تیمها باید یاد بگیرند که هر اسپرینت را مستندسازی کنند تا در آینده مورد استفاده قرار گیرد. این اسپرینت تمام شده چه درسهایی برای افراد داشته است؟ چالشها چگونه برطرف شدند و برای مشکلات راهحلهایی پیشنهاد داده شد؟ آیا این راهحلها برای اسپرینت بعدی هم راهگشا هستند؟ چگونه میتوان یک اسپرینت مشابه را سریعتر و کارآمدتر به اتمام رساند؟ جواب تمام این سوالات باید بهصورت مستند و دقیق ثبت و به دانش و سرمایه اطلاعاتی برای کسبوکارها تبدیل شود.
سخن پایانی
در دههای هستیم که همه شرکتها، سازمانها و کسبوکارها فارغ از کوچکی و بزرگی خود احساس میکنند باید سریعتر و چابکتر باشند. این کسبوکارها به مدیریت پروژه و چارچوبهایی برای توسعه محصول نیاز دارند و اسکرام یکی از راهحلهای موجود است. اما اسکرام پاسخی به تمام مشکلات نیست و حتی گاهی در ابتدای کار باعث کندی و بههمریختگی بیشتر میشود تا اینکه فرهنگ کاری اسکرام بر اثر تداوم و استمرار در پیادهسازی آن شکل بگیرد و تیمهای کاری شادتر، با استرس کمتر و بهرهوری بالاتر ظاهر شوند.
به این مطلب چند ستاره میدهید؟(امتیاز: 3 - رای: 10)
- منبع: ماهنامه شبکه